/**
 *
 * Copyright 2009 Bill Garrett (memesis@gmail.com)
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use
 * this file except in compliance with the License.  You may obtain a copy of the
 * License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software distributed
 * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
 * language governing permissions and limitations under the License. 
 */
package org.memesis.pandorasbook.actions;

import java.awt.event.ActionEvent;
import java.net.MalformedURLException;
import java.util.HashMap;

import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JOptionPane;

import org.memesis.pandorasbook.PandoraDesktop;


/**
 * This action spawns a new window
 *
 * @author garrett
 */
@SuppressWarnings("serial")
public class NewWindowAction extends AbstractAction {
	private PandoraDesktop desktop;
	private String previousLocation;
	
	public NewWindowAction(PandoraDesktop desktop) {
		this.desktop = desktop;
		previousLocation = "";
		
		this.putValue(Action.NAME, "New Window");
		this.putValue(Action.SHORT_DESCRIPTION, "Prompt the user for an Applet XML file to open");
	}
	
	/* (non-Javadoc)
	 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
	 */
	public void actionPerformed(ActionEvent arg0) {
		HashMap<String, String> emap = new HashMap<String, String>();
		String appletUrlString = JOptionPane.showInputDialog(null, "Enter the URL for an Applet XML file", previousLocation);
		
		if(appletUrlString == null)  // This means they pressed Cancel
			return;
		
		previousLocation = appletUrlString;
		emap.put("pandorasbook-applet-url", appletUrlString);
		
		try {
			desktop.runApplet(appletUrlString, emap);
		} catch (MalformedURLException e) {
			JOptionPane.showMessageDialog(null, "I didn't understand the URL you typed.", "Bad URL?", JOptionPane.ERROR_MESSAGE);
			return;
		}
	}
}
